﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    public class _4种传值方式
    {
        public void F1()
        {
            int b = 9;  //ref参数必须先初始化，
            int c = 0;

            Func1(1, ref b, out c,123,23,22);   //两种对params的赋值都可以，不定长度(*不传参都可以*)
            //Func1(1, ref b, out c, new int[] { 5, 2, 9, 29 });
            //ref参数会改变值类型的值
            Console.WriteLine("b:"+b+"\tc:" + c);   //b:123  c:10

        }

        //params 关键字可以指定在 *参数数目可变* 处采用参数的方法参数。
        //在方法声明中的 params 关键字之后不允许任何其他参数，并且在方法声明中只允许一个 params 关键字。
        private void Func1(int a, ref int b, out int c, params int[] d)
        {
            Console.WriteLine("a:" + a + "\t b:" + b);

            for (int i = 0; i < d.Length; i++)
            {
                Console.Write("d" + i + ":" + d[i] + "\t");
            }
            Console.WriteLine();

            b = 123;
            c = 10;
        }
    }
}
